闲话 22.10.1
闲话
这才是真正的闲话
最后讲了一下求导和积分
但是感觉没几个人听
听了也没几个人会
——by crs_line
如果有不会的东西都可以来找我!
给solution引流
但是高数很多东西真的比较基础了
要学的也不多
求导 积分 多元函数 高重积分 级数 然后没了
某人在祂今天未公开的闲话里说我不放图 我也是放的
是四个可爱!虽然略微Badend
桜が泣いている
わたしたちの春は
紛い物、紛い物だから
どうせ知ってたんだろう
わたしあなたから逃げないよ
I'll just be forever a phantom.
杂题
对于所有点数为 的树,如果其满足对于所有 ,与 相连的 中有且只有一个点 满足 ,那么我们称其为好树。对于 每个点求出来有多少好树满足重心为 。这里重心定义为删去这个点后形成的所有连通块大小均小于 。
且 为奇数(所以不存在树有多个重心的情况)
“有且只有一个点 满足 ”这个东西可以通过强制以 为根来生成树来避免判定。
于是我们对 需要求的就是 以 为根, 的子树大小 ,其余点的子树大小 的树的数量。
先考虑第一个条件。
我们设 为 节点的子树大小 的树的数量。
我们考虑子树中有 个点,然后选出除自己外的 个点一共 种可能;不在子树内的节点每个节点需要一个编号比他小的父亲,可能性是 的;第 个点需要一个父亲,可能性是 的;在子树中的 个点,每个点需要一个父亲,可能性是 的。
令 ,于是
然后我们 求出了 。
然后求答案。设 为 点的答案,我们有
是 减去 子树内存在重心 情况的答案。 是重心且在 子树内的可能性为 ,因此有转移式。
于是 求解答案。
code
#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for (register int (i) = (a); (i) <= (b); ++(i))
#define pre(i,a,b) for (register int (i) = (a); (i) >= (b); --(i))
const int N = 2e5 + 10, mod = 998244353;
int jc[N<<1], inv[N<<1], n, m, f[N], ans[N], sum;
int qp(int a, int b) { int ret = 1; while (b) { if (b & 1) ret = 1ll * ret * a % mod; a = 1ll * a * a % mod; b >>= 1; } return ret; }
signed main() {
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
cin >> n; m = (n + 1) / 2;
jc[0] = inv[0] = 1;
rep(i,1,n) jc[i] = 1ll * jc[i-1] * i % mod;
inv[n] = qp(jc[n], mod - 2);
pre(i,n-1,1) inv[i] = 1ll * inv[i+1] * (i+1) % mod;
pre(i,n-m+1,1) ans[i] = (1ll * jc[n-i] * jc[n-m] % mod * inv[n-i-m+1] % mod - 1ll * sum * qp(i, mod - 2) % mod + mod) % mod, sum = (sum + ans[i]) % mod;
rep(i,1,n) cout << ans[i] << ' ';
}
以下是博客签名,与正文无关。
请按如下方式引用此页:
本文作者 joke3579,原文链接:https://www.cnblogs.com/joke3579/p/chitchat221001.html。
遵循 CC BY-NC-SA 4.0 协议。
请读者尽量不要在评论区发布与博客内文完全无关的评论,视情况可能删除。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)